package com.qixin.util.cast;


import com.qixin.util.string.StringUtil;

/**
 * @ClassName CastUtil
 * @Description TODO(用于类型间的转换)
 * @author liuyong
 * @Date 2017年5月18日 上午9:44:54
 * @version 1.0.0
 */
public class CastUtil {

	
    /**
     * @author liuyong
     * @Date 2017年5月18日 上午9:45:34
     * @version 1.0.0
     * @Description (转为String类型)
     * @param obj
     * @return
     */
    public static String castString(Object obj){
        return CastUtil.castString(obj,"");
    }

    /**
     * 
     */
    /**
     * @author liuyong
     * @Date 2017年5月18日 上午9:46:06
     * @version 1.0.0
     * @Description (转为String型（提供默认值）)
     * @param obj
     * @param defaultValue
     * @return
     */
    public static String castString(Object obj,String defaultValue){
        return obj != null ? String.valueOf(obj) : defaultValue;
    }

    /**
     * @author liuyong
     * @Date 2017年5月18日 上午9:46:37
     * @version 1.0.0
     * @Description (转为double型)
     * @param obj
     * @return
     */
    public static double castDouble(Object obj){
        return CastUtil.castDouble(obj, 0);
    }

    
    /**
     * @author liuyong
     * @Date 2017年5月18日 上午9:47:15
     * @version 1.0.0
     * @Description (转为double型（提供默认值）)
     * @param obj
     * @param defaultValue
     * @return
     */
    public static double castDouble(Object obj, double defaultValue){
        double doubleValue = defaultValue;
        if (obj != null){
            String strValue = castString(obj);
            if(StringUtil.isNotEmpty(strValue)){
                try{
                    doubleValue=Double.parseDouble(strValue);
                }catch (NumberFormatException e){
                    doubleValue=defaultValue;
                }
            }
        }
        return doubleValue;
    }

    
    /**
     * @author liuyong
     * @Date 2017年5月18日 上午9:47:46
     * @version 1.0.0
     * @Description (转为long型)
     * @param obj
     * @return
     */
    public static long castLong(Object obj){
        return CastUtil.castLong(obj,0);
    }

    
    /**
     * @author liuyong
     * @Date 2017年5月18日 上午9:48:09
     * @version 1.0.0
     * @Description (转为long型（提供默认值）)
     * @param obj
     * @param defaultValue
     * @return
     */
    public static long castLong(Object obj,long defaultValue){
        long longValue = defaultValue;
        if (obj != null){
            String strValue = castString(obj);
            if(StringUtil.isNotEmpty(strValue)){
                try{
                    longValue = Long.parseLong(strValue);
                }catch (NumberFormatException e){
                    longValue=defaultValue;
                }
            }
        }
        return longValue;
    }

    
    /**
     * @author liuyong
     * @Date 2017年5月18日 上午9:48:31
     * @version 1.0.0
     * @Description (转为int型)
     * @param obj
     * @return
     */
    public static int castInt(Object obj){
        return CastUtil.castInt(obj,0);
    }

    
    /**
     * @author liuyong
     * @Date 2017年5月18日 上午9:48:51
     * @version 1.0.0
     * @Description (转为int型（提供默认值）)
     * @param obj
     * @param defaultValue
     * @return
     */
    public static int castInt(Object obj,int defaultValue){
        int intValue = defaultValue;
        if (obj != null){
            String strValue = castString(obj);
            if (StringUtil.isNotEmpty(strValue)){
                try{
                    intValue=Integer.parseInt(strValue);
                }catch (NumberFormatException e){
                    intValue = defaultValue;
                }
            }
        }
        return intValue;
    }

    /**
     * 转为boolean型
     */
    public static boolean castBoolean(Object obj){
        return CastUtil.castBoolean(obj,false);
    }

    /**
     * 转为boolean型（可指定默认值）
     */
    public static boolean castBoolean(Object obj,boolean defaultValue){
        boolean booleanValue = defaultValue;
        if (obj != null){
         booleanValue = Boolean.parseBoolean(castString(obj));
        }
        return booleanValue;
    }
}
